home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 November / macformat-018.iso / Utility Spectacular / Developer / CIncludesTool 1.0 / modified version / source files / utilities.c < prev    next >
Encoding:
Text File  |  1991-08-28  |  3.3 KB  |  227 lines  |  [TEXT/MPS ]

  1. // utilities.c
  2. //
  3. // sundry utility functions for CIncludesCode MPW tool
  4.  
  5. #include "CIncludesCode.h"
  6. #include <Files.h>
  7. #include <OSUtils.h>
  8. #include <StdIO.h>
  9. #include <StdLib.h>
  10. #include <String.h>
  11. #include <Strings.h>
  12. #include <Memory.h>
  13.  
  14. void fdisplay(char *s)
  15. {
  16. char c;
  17.     
  18. while (c = *s++)
  19.     {
  20.     if (c <= 32)
  21.         {
  22.         fprintf(stderr,"%d ",c);
  23.         }  // if c
  24.     else
  25.         {
  26.         fprintf(stderr,"%c ",c);
  27.         }  // else if c
  28.     }  // while c
  29. }  // fdisplay()
  30.  
  31. Boolean equalStringsUncased(char *s1,char *s2)
  32. {
  33. char c1,c2;
  34.     
  35. while (*s1)
  36.     {
  37.     c1 = *s1++;
  38.     c2 = *s2++;
  39.     if (c1 != c2)
  40.         {
  41.         c1 &= 0xDF;
  42.         c2 &= 0xDF;
  43.         if ((c1 < 'A') || (c1 > 'Z') || (c1 != c2))
  44.             {
  45.             return false;
  46.             }  // if c1
  47.         }  // if c1
  48.     }  // while *s1
  49. return (*s1 == *s2);
  50. }  // equalStringsUncased()
  51.  
  52. Boolean isString(char *p,char *q)
  53. // p is pointer to text chars; q is pointer to C string.
  54. // returns true if chars at p equal chars at q.
  55.  
  56. {
  57. for (; *q != '\0'; ++q,++p)
  58.     {
  59.     if (*q != *p)
  60.         {
  61.         return false;
  62.         }  // if *q
  63.     }  // for
  64. return true;
  65. }  // isString()
  66.  
  67. Handle loadDataFile(char *filename)
  68. {
  69. short fileid;
  70. long filesize;
  71. OSErr error;
  72. Handle dataHdl = 0;
  73. Str255 s;
  74.  
  75. strcpy(s,filename);
  76. c2pstr(s);
  77.  
  78. if (!(error = FSOpen(s,0,&fileid)))
  79.     {
  80.     if (!(error = GetEOF(fileid,&filesize)))
  81.         {
  82.         dataHdl = NewHandle(filesize + 1);
  83.         if (dataHdl)
  84.             {
  85.             error = FSRead(fileid,&filesize,*dataHdl);
  86.             }  // if dataHdl
  87.         else
  88.             {
  89.             error = -1;
  90.             }  // else if dataHdl
  91.         }  // if !error
  92.     (void) FSClose(fileid);
  93.     }  // if !error
  94.  
  95. if (error)
  96.     {
  97.     errorExit("Error loading source file!");
  98.     }  // if error
  99.  
  100. *(*dataHdl + filesize) = '\n';
  101. return dataHdl;
  102. }  // loadDataFile()
  103.  
  104.  
  105. void copyNames(char *dest,char *src)
  106. // extracts C filename from C pathname
  107.  
  108. {
  109. char *s = strrchr(src,(int) ':');
  110. char *d = dest;
  111.  
  112. ++s;
  113. while (*s)
  114.     {
  115.     *d++ = *s++;
  116.     }  // while *d
  117. *d = '\0';
  118. }  // copyNames()
  119.  
  120.  
  121. void errorExit(char *s)
  122. {
  123. fprintf(stderr,"%s\n",s);
  124. SysBeep(1);
  125. exit(2);
  126. }  // errorExit()
  127.  
  128.  
  129. void checkMemory(void)
  130. {
  131. OSErr err = MemError();
  132.     
  133. if (err)
  134.     {
  135.     fprintf(stderr,"Memory Operation Failed: %d\n",err);
  136.     SysBeep(1);
  137.     exit(2);
  138.     }  // if err
  139. }  // checkMemory()
  140.  
  141.  
  142. short getShort(char *p)
  143. {
  144. union shortUnion n;
  145.     
  146. n.cc[0] = *p++;
  147. n.cc[1] = *p;
  148. return (n.vv);
  149. }  // getShort()
  150.  
  151.  
  152. long getLong(char *p)
  153. {
  154. union longUnion n;
  155.     
  156. n.cc[0] = *p++;
  157. n.cc[1] = *p++;
  158. n.cc[2] = *p++;
  159. n.cc[3] = *p;
  160. return (n.vvvv);
  161. }  //getLong()
  162.  
  163.  
  164.  
  165. void putShort(char *dest,short value)
  166. {
  167. union shortUnion  n;
  168.  
  169. n.vv = value;    
  170. *dest++ = n.cc[0];
  171. *dest = n.cc[1];
  172. }  // putShort()
  173.  
  174.  
  175. void putLong(char *dest,long value)
  176. {
  177. union longUnion  n;
  178.  
  179. n.vvvv = value;    
  180. *dest++ = n.cc[0];
  181. *dest++ = n.cc[1];
  182. *dest++ = n.cc[2];
  183. *dest = n.cc[3];
  184. }  // putLong()
  185.  
  186. short dictionaryIndex(char ch)
  187. {
  188. if (ch == '_')
  189.     {
  190.     return 0;
  191.     }  // if ch
  192. else
  193.     {
  194.     return ((ch & 0xDF) - '@');
  195.     }  // else if ch
  196. }  // dictionaryIndex()
  197.  
  198. Boolean validStart(char c)
  199. {
  200. return ((c == '_') | ((c >= 'A') && (c <= 'Z')) | ((c >= 'a') && (c <= 'z')));
  201. }  // validStart()
  202.  
  203. Boolean validChar(char c)
  204. {
  205. return (((c >= '0') && (c <= '9')) | validStart(c));
  206. }  // validChar()
  207.  
  208. int validate(char *s)
  209. {
  210. if ((strlen(s) > 63) || !validStart(*s))
  211.     {
  212.     return 2;
  213.     }  // if strlen()
  214. else
  215.     {
  216.     for (++s; *s != '\0'; ++s)
  217.         {
  218.         if (!validChar(*s))
  219.             {
  220.             return 2;
  221.             }  // if !validChar
  222.         }  // for s
  223.     }  // else if strlen()
  224. return 0;
  225. }  // validate()
  226.  
  227. //  end of utilities.c